package com.cinema.service;

import com.cinema.dao.TicketDao;
import com.cinema.entity.Movie;
import com.cinema.entity.Schedule;
import com.cinema.entity.ScreeningRoom;
import com.cinema.entity.User;
import com.cinema.exception.SeatException;

import java.time.LocalDateTime;
import java.util.List;

/**
 * 电影院服务接口
 * 定义所有核心业务方法
 */
public interface CinemaServiceInterface {
    
    // 用户管理
    void addUser(User user);
    User getUser(String id);
    List<User> getAllUsers();
    void updateUser(User user);
    void deleteUser(String id);
    
    // 电影管理
    void addMovie(Movie movie, User operator);
    void addMovie(Movie movie); // 兼容模式
    Movie getMovie(String id);
    List<Movie> getAllMovies();
    
    // 放映厅管理
    void addRoom(ScreeningRoom room, User operator);
    void addRoom(ScreeningRoom room); // 兼容模式
    ScreeningRoom getRoom(String id);
    List<ScreeningRoom> getAllRooms();
    void deleteRoom(String id, User operator);
    
    // 排片管理
    void addSchedule(Schedule schedule, User operator);
    void addSchedule(Schedule schedule); // 兼容模式
    Schedule getSchedule(String id);
    List<Schedule> getAllSchedules();
    void deleteSchedule(String id, User operator);
    
    // 查询功能
    List<Schedule> queryByMovie(String movieName);
    List<Schedule> queryByRoom(String roomId);
    List<Schedule> queryByTime(LocalDateTime startTime, LocalDateTime endTime);
    List<Movie> getCurrentMovies();
    
    // 售票功能
    void sellTicket(String scheduleId, int row, int col, String phone, User operator) throws SeatException;
    void sellTicket(String scheduleId, int row, int col, String phone) throws SeatException; // 兼容模式
    
    // 座位状态查询
    boolean[][] getSeatStatus(String scheduleId);
    TicketDao.SeatStatistics getSeatStatistics(String scheduleId);
    List<TicketDao.TicketRecord> getTicketRecords(String scheduleId);
} 